package com.elitel.frame.main.dao.ext;

import com.elitel.frame.main.entity.CfgDb;
import com.elitel.frame.main.entity.ext.Census;
import com.elitel.frame.main.entity.vo.PageRequestVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description 扩展数据库链接配置mapper
 *
 * @author guoyanfei
 */
public interface ExtCfgDbMapper {

  /**
   * @Description 分页查询数据源
   *
   * @param BeginIndex,EndIndex
   * @return List<CfgDb>
   * @author guoyanfei
   */
  List<CfgDb> getAllList(PageRequestVo<CfgDb> pr);

  /**
   * @Description 分页查询数据源(Mysql数据库)
   *
   * @param BeginIndex,EndIndex
   * @return List<CfgDb>
   * @author guoyanfei
   * @date 2017/12/28
   */
  List<CfgDb> getAllListMysql(PageRequestVo<CfgDb> pr);

  List<CfgDb> getAllListPG(PageRequestVo<CfgDb> pr);

  /**
   * @Description 查询总记录数
   *
   * @param
   * @return 总记录数
   * @author guoyanfei
   */
  Integer getListCount(PageRequestVo<CfgDb> pr);

  /**
   * @Description 批量删除数据
   *
   * @param dbkey集合
   * @author guoyanfei
   */
  void deleteBatchByKey(List<String> keys);

  /**
   * @Description 通过主键查询数据库配置信息 * @param 数据库主键
   *
   * @author guoyanfei
   */
  CfgDb selectByPrimaryDBSign(String dbSign);

  /**
   * @Description 查询所有数据配置信息
   *
   * @author guoyanfei
   */
  List<CfgDb> getAllListCfgDb();

  /**
   * @Description 通过表标识查询数据源信息
   *
   * @param 表标识
   * @return 数据库实体
   * @author gyf
   */
  CfgDb getDbInfoBydtconfigID(String dtConfigId);

  List<Census> getTreeNode();
  /**
   * 查找db表里所有db_key的集合
   *
   * @return
   */
  List<String> getDbKey();

  /**
   * 根据 Pcode 获取 数据源
   *
   * @param pcode
   * @return
   */
  List<CfgDb> selectDataSourceByProject(String pcode);

  List<CfgDb> getDbListByDbType(String dbType);

    List<CfgDb> dataSourceStatus();
}
